diff --git a/sklearn/ensemble/_forest.py b/sklearn/ensemble/_forest.py
index c60a71771..6a23dec2e 100644
--- a/sklearn/ensemble/_forest.py
+++ b/sklearn/ensemble/_forest.py
@@ -111,13 +111,15 @@ def _get_n_samples_bootstrap(n_samples, max_samples):
         return n_samples
 
     if isinstance(max_samples, Integral):
-        if max_samples > n_samples:
-            msg = "`max_samples` must be <= n_samples={} but got value {}"
-            raise ValueError(msg.format(n_samples, max_samples))
+        if max_samples < 1:
+            raise ValueError("`max_samples` must be at least 1 but got value {}".format(max_samples))
         return max_samples
 
     if isinstance(max_samples, Real):
-        return round(n_samples * max_samples)
+        n_samples_bootstrap = round(n_samples * max_samples)
+        if n_samples_bootstrap < 1:
+            raise ValueError("`max_samples` as a fraction of the number of samples must result in at least 1 sample but got value {}".format(n_samples_bootstrap))
+        return n_samples_bootstrap
 
 
 def _generate_sample_indices(random_state, n_samples, n_samples_bootstrap):
